#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
任务1简化运行脚本
使用subprocess运行各个模块，避免导入问题
"""

import os
import sys
import subprocess
import warnings
warnings.filterwarnings('ignore')

def run_script(script_name, description):
    """运行单个脚本"""
    print(f"\n{description}")
    print("-" * 50)
    
    try:
        # 切换到code目录
        code_dir = os.path.join(os.path.dirname(__file__), 'code')
        os.chdir(code_dir)
        
        # 运行脚本
        result = subprocess.run([sys.executable, script_name], 
                              capture_output=True, text=True, encoding='utf-8')
        
        if result.returncode == 0:
            print(f"✓ {description} 完成")
            if result.stdout:
                print("输出信息:")
                print(result.stdout)
        else:
            print(f"✗ {description} 失败")
            print("错误信息:")
            print(result.stderr)
            return False
            
    except Exception as e:
        print(f"✗ {description} 出错: {e}")
        return False
    
    return True

def main():
    """主函数"""
    print("=== 任务1：数据分析与故障特征提取 ===")
    print("开始运行完整的特征提取和分析流程...\n")
    
    # 检查code目录是否存在
    code_dir = os.path.join(os.path.dirname(__file__), 'code')
    if not os.path.exists(code_dir):
        print(f"错误: code目录不存在: {code_dir}")
        return
    
    # 检查源域数据集是否存在
    data_dir = os.path.join(os.path.dirname(__file__), '源域数据集')
    if not os.path.exists(data_dir):
        print(f"错误: 源域数据集目录不存在: {data_dir}")
        print("请确保源域数据集文件夹在正确位置")
        return
    
    success_count = 0
    total_steps = 5
    
    # 1. 特征提取
    if run_script('feature_extraction.py', '步骤1: 特征提取'):
        success_count += 1
    
    # 2. 消融实验
    if run_script('ablation_study.py', '步骤2: 消融实验'):
        success_count += 1
    
    # 3. PCA分析
    if run_script('pca_feature_reduction.py', '步骤3: PCA分析'):
        success_count += 1
    
    # 4. SHAP分析
    if run_script('tree_model_shap_analysis.py', '步骤4: SHAP分析'):
        success_count += 1
    
    # 5. 特征选择指南
    if run_script('feature_selection_guide.py', '步骤5: 特征选择指南'):
        success_count += 1
    
    # 总结
    print(f"\n=== 任务1完成 ===")
    print(f"成功完成 {success_count}/{total_steps} 个步骤")
    
    if success_count == total_steps:
        print("✓ 所有步骤都成功完成！")
        print("生成的主要文件:")
        print("- bearing_features.csv: 提取的特征数据")
        print("- ablation_results.csv: 消融实验结果")
        print("- reduced_features.csv: PCA降维结果")
        print("- 各种可视化图表和分析报告")
    else:
        print("⚠ 部分步骤失败，请检查错误信息")
        print("建议单独运行失败的步骤进行调试")

if __name__ == "__main__":
    main()
